import React, { useEffect, useState } from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
import * as WebBrowser from 'expo-web-browser';
import { makeRedirectUri, useAuthRequest } from 'expo-auth-session';

// 微信开放平台的 AppID
const CLIENT_ID = 'wx10684715b8f3b501';
// 回调地址
const REDIRECT_URI = makeRedirectUri({
    scheme: 'com.zlx.aiapp', // 替换为你的应用 Scheme
    path: 'http://localhost',
});
// 微信授权请求的 URL
const AUTH_ENDPOINT = 'https://open.weixin.qq.com/connect/qrconnect';

// 解决 WebBrowser 缓存问题
WebBrowser.maybeCompleteAuthSession();

const scopes = ['snsapi_login'];

export default function loginTest() {
    const [request, response, promptAsync] = useAuthRequest(
        {
            clientId: CLIENT_ID,
            scopes,
            redirectUri: REDIRECT_URI,
            usePKCE: false,
            extraParams: {
                state: 'your_random_state_string', // 可用于防止 CSRF 攻击
            },
        },
        {
            authorizationEndpoint: AUTH_ENDPOINT,
        }
    );

    useEffect(() => {
        if (response?.type === 'success') {
            const { code } = response.params;
            // 使用 code 换取 access_token 和用户信息
            // 这里需要在服务器端完成，因为需要 AppSecret
            console.log('Authorization code:', code);
            // 你可以在这里调用自己的 API 来换取 access_token 和用户信息
        }
    }, [response]);

    return (
        <View style={styles.container}>
            <Button
                disabled={!request}
                title="微信登录"
                onPress={() => {
                    promptAsync();
                }}
            />
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
    },
});